﻿//using DexComanda;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using UI.Views.Consultas;
using Persistencia;
using Dlls;

namespace UI.Views.Venda_Direta
{
    /// <summary>
    /// Interaction logic for VendaDireta.xaml
    /// </summary>
    public partial class VendaDireta : Window
    {
        private DataSet result;
        private int iten = 0;
        private decimal totalVenda = 0;
        private List<PedidoItem> listaItensPedido;
        private int codigoProduto;
        private String nomeProduto;
        private decimal valorUnitario;
        private decimal itemValorTotal;

        private MovimentoDLL movimentoDLL;
        private MovimentoItemDLL movimentoitemDLL;
        private Movimento movimento;
        private List<MovimentoItem> movimentoItens;
        
        public VendaDireta()
        {
            InitializeComponent();
          //  conMysql = new ConexaoMysql();
            listaItensPedido = new List<PedidoItem>();

            movimentoDLL = new MovimentoDLL();
            movimentoitemDLL = new MovimentoItemDLL();
            movimento = new Movimento();
            movimentoItens = new List<MovimentoItem>();
        }

        private void Consultar(object sender, KeyEventArgs e) {
            if (e.Key == Key.Enter)
            {
                //new frmConsultaPadrao("Produtos").ShowDialog();
                if (txtCodigoDeBarra.Text != "")
                {
                  //  result = conMysql.ConsultarProdutoPorCodigoDeBarra(this.txtCodigoDeBarra.Text.ToString());
                    if (result.Tables["produto"].Rows.Count > 0)
                    {
                        if (txtQuantidadeProduto.Text != "")
                        {
                            DataRow dRow = result.Tables["produto"].Rows[0];

                            codigoProduto = int.Parse(dRow.ItemArray.GetValue(1).ToString());
                            nomeProduto = dRow.ItemArray.GetValue(2).ToString();

                            valorUnitario = Math.Round(decimal.Parse(dRow.ItemArray.GetValue(64).ToString()), 2);
                            itemValorTotal = valorUnitario * int.Parse(txtQuantidadeProduto.Text.ToString());


                            txtNomeProduto.Text = nomeProduto;
                            txtItemValorUnitario.Text = "R$ " + valorUnitario.ToString();
                            txtItemValorTotal.Text = "R$" + itemValorTotal.ToString();
                            //Prenche a Grid {Código de Barra, Nome do Produto, Quantidade, Preço Unitario, Preço Total}
                            //gridViewProdutos.Rows.Add(iten, txtCodigoDeBarra.Text, nomeProduto, int.Parse(txtQuantidadeProduto.Text), Convert.ToDecimal(valorUnitario), Convert.ToDecimal(itemValorTotal));
                            txtQuantidadeProduto.Focus();
                        }
                        else
                        {
                            MessageBox.Show("Informe a Quantidade.");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Nenhum produto cadastrado.");
                        txtCodigoDeBarra.Text = null;
                        txtQuantidadeProduto.Text = "1";
                    }
                }
            }
        }

        private void AdicionarItemAoPedido(object sender, KeyEventArgs e) 
        {
            if (e.Key == Key.Enter)
            {
                itemValorTotal = valorUnitario * int.Parse(txtQuantidadeProduto.Text.ToString());
              //  listaItensPedido.Add(new PedidoItem() { CodProduto = codigoProduto, NomeProduto = txtNomeProduto.Text, PrecoItem = Convert.ToDecimal(valorUnitario), Quantidade = int.Parse(txtQuantidadeProduto.Text.ToString()), PrecoTotalItem = Convert.ToDecimal(itemValorTotal) });
                movimentoItens.Add(new MovimentoItem() { CodProduto = codigoProduto, ValorUnitario = valorUnitario, Quantidade = int.Parse(txtQuantidadeProduto.Text.ToString()), ValorTotal = Convert.ToDecimal(itemValorTotal) });
                dynamicDataGrid.ItemsSource = null;
                dynamicDataGrid.ItemsSource = listaItensPedido;

                txtCodigoDeBarra.Text = null;

                totalVenda = 0;
                //Soma valor total
                foreach (PedidoItem item in listaItensPedido)
                {
                  //  totalVenda += Convert.ToDecimal(item.PrecoTotalItem);
                }

                lblTotal.Text = totalVenda.ToString();

                txtCodigoDeBarra.Text = "0000000000000";
                txtNomeProduto.Text = "Nome do Produto";
                txtItemValorUnitario.Text = "R$ 0,00";
                txtItemValorTotal.Text = "R$ 0,00";
                txtQuantidadeProduto.Text = "1";

                txtCodigoDeBarra.Focus();
            }
        }

        public void AdicionarProdutoPesquisado(Produto produto) {
            dynamicDataGrid.ItemsSource = null;
            dynamicDataGrid.ItemsSource = listaItensPedido;
        }

        private void AtualizarItemValorTotal(object sender, TextChangedEventArgs e) {
            if (txtQuantidadeProduto.Focus())
            {
                itemValorTotal = valorUnitario * int.Parse(txtQuantidadeProduto.Text.ToString());
                txtItemValorTotal.Text = "R$ "+itemValorTotal.ToString();
            }
        }

        private void Pesquisar(object sender, KeyEventArgs e) {
            if (e.Key == Key.F2) 
            {
                new frmConsultaPadrao("ProdutosPDV").ShowDialog();
            }
            else if (e.Key == Key.F3) 
            {
                new frmConsultaPadrao("Pessoa").ShowDialog();
            }
            else if (e.Key == Key.F4)
            {
                Pessoa pessoa = global.ReturnPessoa;
                if (pessoa == null)
                {
                    Pessoa clienteDoSistema = new Pessoa();
                    
                    clienteDoSistema.Codigo = -1;
                    clienteDoSistema.Nome = "Cliente";
                  //  clienteDoSistema.Observacao = "Cliente Padrão do sistema.";
                        
                   
                }
                else {
                    
                }
            }
        }

        private void CalcularTroco(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                decimal recebido = decimal.Parse(txtRecebido.Text.ToString());
                decimal total = decimal.Parse(lblTotal.Text.ToString());
                decimal troco = recebido - total;

                txtTroco.Text = troco.ToString().Replace('.', ',');
            }
        }
       
    }
}
